package com.drg.center.service;

import com.drg.center.entity.param.*;
import com.drg.center.entity.result.*;
import com.guaike.core.entity.result.PageEntity;
import com.guaike.core.entity.result.Result;

import javax.servlet.http.HttpServletResponse;
import java.util.List;


public interface DataStatAnalysisService {
    /**
     * 全院DRG费用分析
     *
     * @param param
     * @return
     */
    Result<TotalDrgCostAnalysisVO> totalHospitalCostAnalysis(DrgCostAnalysisDTO param);

    /**
     * 病例盈亏预测列表
     *
     * @param param
     * @return
     */
    Result<PageEntity<CaseProfitLossPageVO>> caseProfitLossPage(CaseProfitLossDTO param);

    /**
     * 导出病例盈亏预测excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void exportCaseProfitLosExcel(HttpServletResponse response, CaseProfitLossDTO param) throws Exception;

    /**
     * 病例盈亏分析列表
     *
     * @param param
     * @return
     */
    Result<PageEntity<CaseProfitLossAnalysisPageVO>> caseProfitLossAnalysisPage(CaseProfitLossDTO param);

    /**
     * 病例盈亏分析统计
     *
     * @param param
     * @return
     */
    Result<CaseProfitLossAnalysisVO> caseProfitLossAnalysis(CaseProfitLossDTO param);

    /**
     * 导出病例盈亏分析excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void exportCaseProfitLossAnalysisExcel(HttpServletResponse response, CaseProfitLossDTO param) throws Exception;

    /**
     * 科室数据总览
     *
     * @param param
     * @return
     */
    Result<DepartDataVO> departDataOverview(DepartDataDTO param);

    /**
     * 科室盈亏分析列表
     *
     * @param param
     * @return
     */
    Result<List<DepartProfitLossPageVO>> departProfitLossAnalysis(DepartProfitLossDTO param);

    /**
     * 导出科室盈亏分析excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void exportDepartProfitLossAnalysisExcel(HttpServletResponse response, DepartProfitLossDTO param) throws Exception;

    /**
     * 科室费用分析汇总列表
     *
     * @param param
     * @return
     */
    Result<List<DepartCostPageVO>> departCostAnalysis(DepartCostDTO param);

    /**
     * 导出科室费用分析汇总excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void exportDepartCostAnalysisExcel(HttpServletResponse response, DepartCostDTO param) throws Exception;

    /**
     * 病组盈亏分析列表
     *
     * @param param
     * @return
     */
    Result<List<DrgProfitLossPageVO>> drgProfitLossAnalysis(DrgProfitLossDTO param);

    /**
     * 导出病组盈亏分析excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void exportDrgProfitLossAnalysisExcel(HttpServletResponse response, DrgProfitLossDTO param) throws Exception;

    /**
     * 医保拒付统计列表
     *
     * @param param
     * @return
     */
    Result<PageEntity<MedicalProtestPageVO>> medicalProtestStat(MedicalProtestDTO param);

    /**
     * 导出医保拒付统计excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void exportMedicalProtestStatExcel(HttpServletResponse response, MedicalProtestDTO param) throws Exception;

    /**
     * 医保总额预付统计列表
     *
     * @param param
     * @return
     */
    Result<PageEntity<MedicalTotalPageVO>> medicalTotalStat(MedicalTotalDTO param);

    /**
     * 导出医保总额预付统计excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void exportMedicalTotalStatExcel(HttpServletResponse response, MedicalTotalDTO param) throws Exception;

    /**
     * 样本数据查询列表
     *
     * @return
     */
    Result<List<SampleDataPageVO>> SampleDataFind();

    /**
     * 导出样本数据查询excel
     *
     * @param response
     * @throws Exception
     */
    void exportSampleDataFindExcel(HttpServletResponse response) throws Exception;


    /**
     * 医生组盈亏汇总导出excel
     *
     * @param response
     * @param param
     */
    void doctorGroupProfitLossTotalExportExcel(HttpServletResponse response, DoctorGroupSummaryDTO param) throws Exception;

    /**
     * 医生组盈亏分析
     *
     * @param param
     * @return
     */
    Result<DoctorGroupProfitLossAnalysisVO> doctorGroupProfitLossAnalysis(DoctorGroupProfitDTO param);

    /**
     * 医生盈亏汇总导出excel
     *
     * @param param
     */
    void doctorProfitLossTotalExportExcel(HttpServletResponse response, DoctorSummaryDTO param) throws Exception;

    /**
     * 医生盈亏分析
     *
     * @param param
     * @return
     */
    Result<DoctorProfitLossAnalysisVO> doctorProfitLossAnalysis(DoctorProfitDTO param);

    /**
     * 病组盈亏分析统计
     *
     * @param param
     * @return
     */
    Result<DrgProfitLossAnalysisVO> drgProfitLossAnalysisStat(DrgProfitDTO param);

    /**
     * 病组盈亏项目统计列表
     *
     * @param param
     * @return
     */
    Result<List<DrgProfitLossProjectTotalPageVO>> drgProfitLossProjectTotalStat(DrgProfitLossProjectTotalStatDTO param);

    /**
     * 导出病组盈亏项目统计excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void drgProfitLossProjectTotalStatExcel(HttpServletResponse response, DrgProfitLossProjectTotalStatDTO param) throws Exception;

    /**
     * 病例复杂程度分析列表
     *
     * @param param
     * @return
     */
    Result<List<CaseComplexityAnalysisPageVO>> caseComplexityAnalysis(CaseComplexityAnalysisDTO param);

    /**
     * 导出病例复杂程度分析excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void caseComplexityAnalysisExcel(HttpServletResponse response, CaseComplexityAnalysisDTO param) throws Exception;

    /**
     * 重点项目统计列表
     *
     * @param param
     * @return
     */
    Result<PageEntity<KeyProjectsTotalStatPageVO>> keyProjectsTotalStat(KeyProjectsTotalStatExcelDTO param);

    /**
     * 导出重点项目统计excel
     *
     * @param response
     * @param param
     * @throws Exception
     */
    void keyProjectsTotalStatExcel(HttpServletResponse response, KeyProjectsTotalStatExcelDTO param) throws Exception;
}
